Skip to content

Add supportsChannelFeatures tier1 to all app manifests#453

Open
singhk97 wants to merge 1 commit intomainfrom
add-supports-channel-features
Open

Add supportsChannelFeatures tier1 to all app manifests#453
singhk97 wants to merge 1 commit intomainfrom
add-supports-channel-features

Conversation

@singhk97
Copy link
Contributor

@singhk97 singhk97 commented Feb 17, 2026

Summary

  • Adds "supportsChannelFeatures": "tier1" to the root of all 10 Teams app manifest.json.hbs template files
  • Covers templates for Python (ai, echo, graph), TypeScript (ai, echo, graph, mcp, mcpclient, tab), and the ATK basic C# config

skip-test-verification

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@singhk97
Copy link
Contributor Author

@claude update the schema version to 1.25, add schema property "$schema": "{string}", if it doesn't exist. it should point to this https://developer.microsoft.com/json-schemas/teams/v1.25/MicrosoftTeams.schema.json. Ensure that there are no schema validation errors.

Copy link
Contributor

@rajan-chari rajan-chari left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The supportsChannelFeatures property requires manifest schema v1.25, but all templates still declare v1.20:

"$schema": "https://developer.microsoft.com/json-schemas/teams/v1.20/MicrosoftTeams.schema.json",
"manifestVersion": "1.20",

These need to be bumped to v1.25 for the new property to pass schema validation:

"$schema": "https://developer.microsoft.com/json-schemas/teams/v1.25/MicrosoftTeams.schema.json",
"manifestVersion": "1.25",

Ref: https://learn.microsoft.com/en-us/microsoft-365/extensibility/schema/?view=m365-app-1.25

Also note there was a Developer Portal bug where supportsChannelFeatures silently disappeared on save — reportedly fixed as of March 19, 2026: https://learn.microsoft.com/en-us/answers/questions/5777774/unable-to-save-supportschannelfeatures-in-teams-ap

@rajan-chari
Copy link
Contributor

Test Results: supportsChannelFeatures: "tier1"

Tested the PR changes end-to-end by deploying a bot with both v1.25 (with supportsChannelFeatures) and v1.20 (without) manifests to the BAMI1 tenant.

Setup

  • Scaffolded a TypeScript echo bot with channel event logging
  • Deployed to Azure Bot Service with DevTunnel
  • Sideloaded to a private team in Teams
  • Created shared and private channels within the team

Results: v1.25 manifest WITH supportsChannelFeatures: "tier1"

# Trigger Result
1 Bot added to shared channel conversationUpdate with eventType: "channelMemberAdded", channel.type: "shared"
2 Message in shared channel message activity received with channel.type: "shared" and full team/channel context
3 Bot added to private channel conversationUpdate with eventType: "channelMemberAdded", channel.type: "private"
4 Message in private channel message activity received with channel.type: "private" and full team/channel context
5 Message in standard channel ✅ Works as expected

Results: v1.20 manifest WITHOUT supportsChannelFeatures (control)

# Trigger Result
1 Manifest update applied ⚠️ Bot received channelMemberRemoved from private channel — Teams actively evicted the bot
2 @mention in shared channel ❌ Bot not available to @mention
3 @mention in private channel ❌ Bot not available to @mention (removed from channel)
4 Message in standard channel ✅ Still works

Key Finding

supportsChannelFeatures: "tier1" is required for bots to participate in shared and private channels. Removing the property causes Teams to actively remove the bot from those channels. This confirms Mehak's issue.

Blocker: Schema version must be bumped

As flagged in my earlier review, all 11 templates still reference v1.20:

"$schema": "https://developer.microsoft.com/json-schemas/teams/v1.20/MicrosoftTeams.schema.json",
"manifestVersion": "1.20",

The v1.20 schema has "additionalProperties": false at the root and does not define supportsChannelFeatures. The v1.25 schema does define it (allowed values: "tier1" or null).

This means the PR as-is produces technically invalid manifests — any schema validator will reject supportsChannelFeatures as an unknown property under v1.20. The fix worked in my testing because Teams is lenient about validation, but:

  • Teams Developer Portal may strip the property
  • Teams Toolkit validation will flag it
  • It's incorrect per the schema contract

Must fix: Bump $schema and manifestVersion from v1.20 to v1.25 in all 11 files.


Tested 2026-03-21 on BAMI1 tenant with @microsoft/teams.apps TypeScript SDK

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants